package com.mes.dao.jy;

import java.util.List;

import com.mes.entity.hy.Equipment;
import com.mes.entity.hy.Product;
import com.mes.entity.jy.CustomerOrderAndDetailjy;
import com.mes.entity.jy.CustomerOrderjy;
import com.mes.entity.jy.Plandetail;
import com.mes.entity.jy.Planjy;
import com.mes.entity.jy.Queryjy;

/**
 * @ClassName: PlanjyMapper 
 * @Description: 生产计划Dao层接口
 * @Author jy
 * @Date 2018年3月28日 下午3:53:58 
 * @version 1.0
 */
public interface PlanjyMapper {

    /**
     * 统计销售计划单总记录数
     * @param queryjy 条件查询实体
     * @return 统计结果
     */
	public int countCustomerOrder(Queryjy queryjy);

	/**
	 * 分页查询销售计划单
	 * @param queryjy 条件查询实体
	 * @return 销售计划集合
	 */
	public List<CustomerOrderjy> customerOrderPagine(Queryjy queryjy);

	/**
	 * 根据销售计划单id查询销售计划单详情总记录数
	 * @param sid 销售计划单id
	 * @return 统计结果
	 */
	public int countCostomerOrderDetail(long sid);

	/**
	 * 根据销售计划单id查询销售计划单列表
	 * @param sid 销售计划单id
	 * @return 销售计划详情集合
	 */
	public List<CustomerOrderAndDetailjy> seselectSalePlanDetailBysid(long sid);

	/**
	 * 根据产品id查询产品详情
	 * @param productid 产品id
	 * @return 产品实体
	 */
	public Product selsectProductByid(Long productid);

	/**
	 * 新建生产计划单
	 * @param planjy 生产计划实体
	 * @return 影响行数
	 */
	public int createPlan(Planjy planjy);

	/**
	 * 统计生产计划单总记录数
	 * @param queryjy 条件查询实体
	 * @return 统计结果
	 */
	public int countProductPlan(Queryjy queryjy);

	/**
	 * 分页查询生产计划单列表
	 * @param queryjy 条件查询实体
	 * @return 生产计划实体集合
	 */
	public List<Planjy> selectProductPlanPagein(Queryjy queryjy);

	/**
	 * 按条件查询所有的生产计划单单号
	 * @param queryjy2 条件查询实体
	 * @return 生产计划实体集合
	 */
	public List<Planjy> selectProductPlanByState(Queryjy queryjy2);

	/**
	 * 查询所有的设备信息
	 * @param queryjy3 条件查询实体
	 * @return 设备集合
	 */
	public List<Equipment> selectEqupment(Queryjy queryjy3);

	/**
	 * 根据id查询生产计划单
	 * @param id 生产计划单id
	 * @return 生产计划单
	 */
	public Planjy selectProductPlanByid(long id);

	/**
	 * 根据id查询销售计划单详情中的销售计划量
	 * @param id 生产计划单id
	 * @return 销售计划量
	 */ 
	public Integer selectsaleDetaiplannuml(Long id);

	/**
	 * 删除生产计划单
	 * @param pids 生产计划id字符串
	 * @return 影响行数
	 */
	public int deletePlan(String pids);

	/**
	 * 根据计划单id修改审批状态以及流程实例id
	 * @param planjy 生产计划实体
	 */
	public void editPlanState(Planjy planjy);

	/**
	 * 修改销售计划单状态
	 * @param plannum 生产计划单号
	 */
	public void editSstate1(String plannum);

	/**
	 * 根据产品编号统计库存数量
	 * @param productorid 产品编号
	 * @return 库存数量
	 */
	public String countProductNum(Long productorid);

	/**
	 * 根据pid查当前完成数量
	 * @param id 生产计划id
	 * @return 当前完成数量
	 */
	public List<String> selectWorkBypid(Long id);

	/**
	 * 根据remark1查当前完成数量
	 * @param id 生产计划id
	 * @return 当前完成数量
	 */
	public List<String> selectWorkBypid2(Long id);

	/**
	 * 修改销售计划单状态
	 * @param plandetail3 生产计划详情
	 */
	public void editSstate2(Plandetail plandetail3);

	/**
	 * 根据条件查询人员
	 * @param queryjy 条件查询实体
	 * @return 人员id集合
	 */
	public List<Long> selectUserByJob(Queryjy queryjy);

	/**
	 * 根据车间信息查询设备信息
	 * @param cid 车间id
	 * @return 设备信息实体集合
	 */
	public List<Equipment> selectEqupment2(Long cid);

	/**
	 * 修改销售计划单状态
	 * @param customerOrderjy 销售计划单实体
	 */
	public void editSstate3(CustomerOrderjy customerOrderjy);

	/**
	 * 根据排产单id查询当前完成数量
	 * @param did 排产单id
	 * @return 当前完成数量
	 */
	public String selectWorkBydid(Long did);

	/**
	 * 根据排产单id查询当前完成数量
	 * @param did did 排产单id
	 * @return 当前完成数量
	 */
	public String selectWorkBydid2(Long did);
}